package com.alks.function.mapper.finance.salary;

import com.alks.entity.data.entity.PcSalaryLog;
import com.alks.entity.data.entity.PcSalaryNew;
import com.alks.entity.data.entity.PcSalaryNewDetail;
import com.alks.function.data.dto.finance.salary.CutSalaryList;
import com.alks.function.data.dto.finance.salary.EmployeeListDto;
import com.alks.function.data.dto.finance.salary.PcSalaryNewCountDto;
import com.alks.function.data.dto.finance.salary.PcSalaryNewDto;
import com.alks.function.data.request.finance.salary.PcSalaryNewListRequest;
import com.alks.function.data.request.finance.salary.UpdateRemarkRequest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface PersonnelMapper extends BaseMapper<PcSalaryNew> {

    /**
     * 查询是否检核
     * @param years
     * @param companyId
     */
    String getSalaryFlag(String years, String companyId);

    /**
     * 查询资料明细
     * @param years
     * @param companyId
     */
    List<EmployeeListDto> getEmployeeList(String years, String companyId);

    /**
     * 资料明细
     * @param request
     * @return
     */
    List<PcSalaryNewDto> getPcSalaryNewList(@Param("t") PcSalaryNewListRequest request);

    /**
     * 资料明细统计
     * @param request
     * @return
     */
    PcSalaryNewCountDto getPcSalaryNewCount(@Param("t")PcSalaryNewListRequest request);

    /**
     * 批量新增
     * @param pcSalaryNews
     * @return
     */
    int addPcSalaryNewList(List<PcSalaryNew> pcSalaryNews);

    /**
     * 修改考勤资料记录
     * @param pcSalaryNews
     * @return
     */
    int updateByEmpAttend(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 删除岗位变更日志
     * @param years
     * @param companyId
     * @return
     */
    int delPcSalaryNewDetail(@Param("years") String years, @Param("companyId") String companyId);

    /**
     * 写入岗位变更明细
     * @param pcSalaryNewDetails
     * @return
     */
    int addPcSalaryNewDetails(List<PcSalaryNewDetail> pcSalaryNewDetails);

    /**
     * 修改月份检核记录
     * @param companyId
     * @param userName
     * @param now
     * @param flag
     * @param years
     * @return
     */
    int updateBySalaryFlag(@Param("companyId") String companyId, @Param("userName") String userName, @Param("now") LocalDateTime now, @Param("flag") String flag, @Param("years") String years);

    /**
     * 写入财务操作日志
     * @param entity
     * @return
     */
    int addPcSalaryLog(PcSalaryLog entity);

    /**
     * 查询实发工资是否为空
     * @param companyId
     * @param years
     * @return
     */
    Integer getPcSalaryAct(String companyId, String years);

    /**
     * 查询调岗明细
     * @param yyyymm
     * @param workerId
     * @param companyId
     * @return
     */
    List<PcSalaryNewDetail> getPcSalaryNewDetailList(String yyyymm, String workerId, String companyId);

    /**
     * 查询基本工资
     * @param years
     * @param companyId
     * @return
     */
    List<PcSalaryNewDto> getEmployeeToSalaryList(String years, String companyId);

    /**
     * 查询当月变岗明细
     * @param years
     * @param companyId
     * @return
     */
    List<PcSalaryNewDetail> getPcSalaryNewDetails(String years, String companyId);

    /**
     * 写入计时工资
     * @param pcSalaryNews
     * @return
     */
    int updateByPositionAlw(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 查询计件工资
     * @param years
     * @param companyId
     * @return
     */
    List<CutSalaryList> getCutSalaryList(String years, String companyId);

    /**
     * 查询针车计件工资
     * @param years
     * @param companyId
     * @return
     */
    List<CutSalaryList>  getStitchSalaryList(String years, String companyId);

    /**
     * 写入计件工资
     * @param pcSalaryNews
     * @return
     */
    int updateByPositionAlw2(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 查询针车部门绩效
     * @param years
     * @param companyId
     * @return
     */
    List<CutSalaryList>  getStitchDeptSalaryList(String years, String companyId);

    /**
     * 查询针车课长绩效
     * @param years
     * @param companyId
     * @return
     */
    List<CutSalaryList> getStitchDeptSalaryList2(String years, String companyId);

    /**
     * 修改绩效工资
     * @param pcSalaryNews
     * @return
     */
    int updateBySalaryAlw(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 修改实发工资
     * @param pcSalaryNews
     * @return
     */
    int updateBySalaryAct(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 查询要重算工资列表
     * @param request
     * @return
     */
    List<PcSalaryNew> getPcSalaryNewList2(@Param("list") List<UpdateRemarkRequest> request);

    /**
     * 查询裁断计件工资
     * @param request
     * @return
     */
    List<CutSalaryList> getCutSalaryList2(@Param("list")List<UpdateRemarkRequest> request);

    /**
     * 查询针车计件工资
     * @param request
     * @return
     */
    List<CutSalaryList> getStitchSalaryList2(@Param("list")List<UpdateRemarkRequest> request);

    /**
     * 查询针车组长绩效
     * @param request
     * @return
     */
    List<CutSalaryList> getStitchDeptSalaryList3(@Param("list")List<UpdateRemarkRequest> request);

    /**
     * 删除岗位变更日志
     * @param request
     * @return
     */
    int delPcSalaryNewDetail2(@Param("list")List<UpdateRemarkRequest> request);

    /**
     * 修改薪资资料明细
     * @param pcSalaryNews
     * @return
     */
    int updatePcSalaryNews(@Param("list") List<PcSalaryNew> pcSalaryNews);

    /**
     * 查询返回月份
     * @return
     */
    String getMonth();

}
